package com.mk.dao.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import java.io.Serializable;
import java.util.Collection;
import org.apache.ibatis.annotations.Param;

/**
 * @author : XueJinCha
 */
public interface CommonMapper<T> extends BaseMapper<T> {

    /**
     * 根据ID强制物理删除 此操作将忽略MybatisPLus逻辑删除配置
     */
    int hardDeleteById(Serializable id);

    /**
     * 强制物理删除 此操作将忽略MybatisPLus逻辑删除配置
     */
    int hardDelete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);

    /**
     * 批量物理删除
     *
     * @param ids  主键ID集合
     * @param <ID> ID类型
     * @return 删除的数量
     */
    <ID extends Serializable> int hardDeleteByIds(Collection<ID> ids);
}
